package jvm.c2_classloader;


//双亲委派(当需要加载类的字节码文件的时候，先向上每个加载器和父加载器进行各自的缓存(表示已经加载过)查找（找到返回），
//        再递归回去通过findClass方法去对应的地方将类的字节码文件加载到内存中)安全考虑，不能自己定义String类覆盖jdk自己的
//(父加载器是一种依赖关系非继承关系，加载器的加载器都是BootStrap，为null)
//BootStrap 加载核心类，C++实现，在Java中没有具体的对象
//ExtClassLoader（JDK 1.9 之后，改名为 PlatformClassLoader） 加载扩展jar包（extension）
//AppClassLoader 加载classPath指定的内容
//CustomClassLoader 自定义类加载器
//
//双亲委派的模型定义在loadClass方法中

public class T004_ParentAndChild {
    public static void main(String[] args) {
        System.out.println(T004_ParentAndChild.class.getClassLoader());
        System.out.println(T004_ParentAndChild.class.getClassLoader().getClass().getClassLoader());
        System.out.println(T004_ParentAndChild.class.getClassLoader().getParent());
        System.out.println(T004_ParentAndChild.class.getClassLoader().getParent().getClass().getClassLoader());
        System.out.println(T004_ParentAndChild.class.getClassLoader().getParent().getParent());
        //System.out.println(T004_ParentAndChild.class.getClassLoader().getParent().getParent().getParent());

    }
}
